/**
 * Copyright (c) 2017, Alex. All rights reserved.
 */
package com.oschina.bottle.common.model;

import com.oschina.bottle.common.dto.BaseDTO;
import java.util.Collections;
import java.util.List;
import org.apache.commons.lang3.ObjectUtils;

/**
 * 分页结果对象
 * 为统一写法，不提供相应的set方法，采用build构建
 *
 * total 记录总数
 * ++++ 如果total为0，则表示结果集为空
 *
 * items 数据集
 * ++++ 不返回null，如果没有数据，返回空集合
 *
 * @author <a href="mailto:zhongchao@gegejia.com">zhong</a>
 * @version 1.0 2017/9/27
 * @since 1.0
 */
public class PageResult<T> extends BaseDTO
{
    /**
     * 总数
     */
    private int total = 0;

    /**
     * 数据对象
     */
    private List<T> items;

    public static <T> PageResult<T> build(int total, List<T> items) {
        if(total < 0) {
            throw new IllegalArgumentException("the total must greater than 0");
        }

        PageResult<T> pageResult = new PageResult<>();
        pageResult.total = total;
        pageResult.items = ObjectUtils.defaultIfNull(items, Collections.emptyList());
        return pageResult;
    }

    /**
     * 构建一个空的result对象, total==0
     *
     * @return
     */
    public static <T> PageResult<T> build() {
        return build(0, null);
    }

    public Integer getTotal()
    {
        return total;
    }

    public List<T> getItems()
    {
        return items;
    }

}
